package com.xncoding.trans.hannder;

import com.xncoding.trans.enums.RedisCacheEnums;

import java.util.concurrent.TimeUnit;
/**
 * @CreateAt: 2023-11-3 11:29:39
 * @ModifyAt: 2023-11-3 11:29:39
 * @Version 1.0
 */
public interface RedisCacheHandler {
    /**
     * 是否支持处理
     *
     * @param type
     * @return
     */
    boolean support(RedisCacheEnums type);
    /**
     * 查询缓存信息
     *
     * @param args
     * @param originalKey
     * @return
     */
    Object queryHandler(Object[] args, String originalKey) throws Exception;
    /**
     * 缓存信息是否存在
     *
     * @param args
     * @param originalKey
     * @return
     */
    Boolean existHandler(Object[] args, String originalKey) throws Exception;
    /**
     * 生成缓存信息
     *
     * @param type        类型
     * @param args        参数
     * @param result      结果
     * @param time        时间
     * @param timeType    时间类型
     * @param originalKey
     */
    void handler(RedisCacheEnums type, Object[] args, Object result, Integer time, TimeUnit timeType, String originalKey) throws Exception;
}